// go 语言中 没有 while ,do while
package main

import "fmt"
import "time"
import "math/rand"

func main(){

	//写法1
	for i := 1; i<10 ;i++{
		fmt.Println("i=",i)
	}

	fmt.Println()
	//写法2
	j:=1
	for j <= 10 {
		fmt.Println("j=",j)
		j++
	}

	fmt.Println()
	//写法3 配合 break
	q:=1
	for {
		fmt.Println("q=",q)
		q++
		if q == 10{
			break
		}
		
	}
	
	//遍历字符串1 传统  中文会乱码
	var str string ="hello gegeyu"
	for i:=0;i<len(str);i++{
		fmt.Printf("%c ",str[i])
	}

	fmt.Println()
	//遍历字符串2  for range  中文可以自动遍历
	str = "hello zengyuhan"
	for index, val:= range str{
		fmt.Printf("index=%d,val=%c\t",index,val)
	}

	fmt.Println()
	//遍历字符串 传统 中文 需要使用切片
	var str3 = "hello 格格玉"
	var str3_new = []rune(str3)
	for i:=0;i<len(str3_new);i++{
		fmt.Printf("%c \t",str3_new[i])
	}
	
	//99
	fmt.Println()
	for i:=1;i<=9;i++{
		for j:=1;j<=i;j++{
			fmt.Printf("%d * %d = %d\t",j,i,j*i)
			
		}
		fmt.Println()
	}

	//输出随机数
	fmt.Println()

	//生成 0-100 的随机数
	//种子  秒
	rand.Seed(time.Now().Unix())
	//time.Now().Unix() 返回当前时间戳
	var r1 = rand.Intn(100) + 1
	fmt.Println("r1=",r1)
	for{
		//种子 纳秒
		rand.Seed(time.Now().UnixNano())
		var rn = rand.Intn(100) + 1
		fmt.Print(" ",rn)
		if rn == 99{
			break
		}
		
	}
	
	
	//跳转控制
	for{
		//种子 纳秒
		rand.Seed(time.Now().UnixNano())
		var rn = rand.Intn(100) + 1
		fmt.Print(" ",rn)
		if rn == 99{
			break geyu
		}
	}

	fmt.Println()
	fmt.Println("continue:------")

	// continue 退出本次循环
	gege: for{
		//种子 纳秒
		rand.Seed(time.Now().UnixNano())
		var rn = rand.Intn(100) + 1
		fmt.Print(" ",rn % 2)
		if rn % 2 == 0 && rn != 20 &&  rn != 88 {
			continue gege
		}
		
		//如果== 88 再来
		if rn == 88 {
			fmt.Println("-----------------")
			continue gege
		}

		fmt.Print("  ",rn)
		if rn == 20 {
			break
		}
		
	}


	
	
	

}